This repository has been archived by the owner on Nov 4, 2024. It is now read-only.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.60.0
->1.72.0
1.78.0
(+9)Release Notes
rust-lang/rust (rust)
v1.72.0
Compare Source
==========================
Language
#![cfg(FALSE)]
behaves on crate rootclippy::undropped_manually_drops
lintclippy::invalid_utf8_in_unchecked
lint asinvalid_from_utf8_unchecked
andinvalid_from_utf8
clippy::cast_ref_to_mut
lint asinvalid_reference_casting
clippy::cmp_nan
lint asinvalid_nan_comparisons
dyn Trait
objectsCompiler
cfg
-ed out items to mention them in diagnostics-
is given as output fileloongarch64-unknown-none*
.eh_frame
from being emitted for-C panic=abort
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
Libraries
thread::{park, unpark}
T: Sized
bounds onBufReader<T>
,BufWriter<T>
andLineWriter<T>
select_nth_unstable
Ok
on kill if process has already exitedVec
s over different allocators{Arc,Rc,Weak}::ptr_eq
ignore pointer metadataRustdoc
[]
Stabilized APIs
impl<T: Send> Sync for mpsc::Sender<T>
impl TryFrom<&OsStr> for &str
String::leak
These APIs are now stable in const contexts:
CStr::from_bytes_with_nul
CStr::to_bytes
CStr::to_bytes_with_nul
CStr::to_str
Cargo
-Zdoctest-in-workspace
by default. When running each documentationtest, the working directory is set to the root directory of the package the
test belongs to.
docs
#12221
#12288
build.jobs
parallelism back to the default.
#12222
Compatibility Notes
Display
forIpv6Addr
for IPv4-compatible addressesadded in Rust 1.49. These extended characters aren't allowed on crates.io, so
this should only impact users of other registries, or people who don't publish
to a registry.
#12291
mips*-unknown-linux-gnu*
targets from host tier 2 to target tier 3 support.v1.71.1
Compare Source
===========================
suspicious_double_ref_op
lint when callingborrow()
can_eq
inderive(..)
suggestion for missing methodv1.71.0
Compare Source
==========================
Language
raw-dylib
,link_ordinal
,import_name_type
and-Cdlltool
.clippy::{drop,forget}_{ref,copy}
lints.Drop
impl compatibilityCompiler
PlaceMention
,making
let _ =
patterns more consistent with respect to the borrow checker.--print deployment-target
flag for Apple targets.extern "C-unwind"
and friends.The existing
extern "C"
etc. may change behavior for cross-language unwinding in a future release.*-linux-musl
targets to 1.2.3,enabling time64 on 32-bit systems.
debugger_visualizer
for embedding metadata like Microsoft's Natvis.
Self
respect tuple constructor privacy.apple-m1
as the target CPU foraarch64-apple-darwin
.x86_64h-apple-darwin
target.loongarch64-unknown-linux-gnu
to Tier 2 with host tools.Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
Libraries
Additional panics are allowed while unwinding, as long as they are caught before escaping
a
Drop
implementation, but panicking within a panic hook is now an immediate abort.From<&[T]> for Box<[T]>
bound toT: Clone
.T: Send
boundin
Error for mpsc::SendError<T>
andTrySendError<T>
.alloc::realloc
to match
Layout
requirements that the size must not exceedisize::MAX
.const {}
syntax forstd::thread_local
.This syntax was stabilized in Rust 1.59, but not previously mentioned in release notes.
Stabilized APIs
CStr::is_empty
BuildHasher::hash_one
NonZeroI*::is_positive
NonZeroI*::is_negative
NonZeroI*::checked_neg
NonZeroI*::overflowing_neg
NonZeroI*::saturating_neg
NonZeroI*::wrapping_neg
Neg for NonZeroI*
Neg for &NonZeroI*
From<[T; N]> for (T...)
(array to N-tuple for N in 1..=12)
From<(T...)> for [T; N]
(N-tuple to array for N in 1..=12)
windows::io::AsHandle for Box<T>
windows::io::AsHandle for Rc<T>
windows::io::AsHandle for Arc<T>
windows::io::AsSocket for Box<T>
windows::io::AsSocket for Rc<T>
windows::io::AsSocket for Arc<T>
These APIs are now stable in const contexts:
<*const T>::read
<*const T>::read_unaligned
<*mut T>::read
<*mut T>::read_unaligned
ptr::read
ptr::read_unaligned
<[T]>::split_at
Cargo
Cargo.toml
.workspace_default_members
to the output ofcargo metadata
.cargo new
/cargo init
.Rustdoc
rustdoc::unescaped_backticks
lint for broken inline code.~~old~~
vs.~new~
)Misc
Compatibility Notes
TypeId
.Code that uses a constant
TypeId
in a pattern will potentially be broken.Known cases have already been fixed -- in particular, users of the
log
crate's
kv_unstable
feature should update tolog v0.4.18
or later.sysroot
crate to represent the standard library crates.This does not affect stable users, but may require adjustment in tools that build their own standard library.
rustup
. WhenCargo detects it will run
rustc
pointing to a rustup proxy, it'll try bypassing the proxy anduse the underlying binary directly. There are assumptions around the interaction with rustup and
RUSTUP_TOOLCHAIN
. However, it's not expected to affect normal users.handle misspellings. Previously, Cargo tried each
combination of hyphens and underscores, causing excessive requests to crates.io.
RUSTUP_HOME
andRUSTUP_TOOLCHAIN
in the[env]
configurationtable. This is considered to be not a use case Cargo would like to support, since it will likely
cause problems or lead to confusion.
Internal Changes
These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.
v1.70.0
Compare Source
==========================
Language
asm!
operandsformat_args
invocations to uses captureslet _ = expr
position.Compiler
This provides a smaller version of debuginfo for cases that only need line number information
(
-Cdebuginfo=line-tables-only
), which may eventually become the default for-Cdebuginfo=1
.unused_allocation
lint againstBox::new
tooloongarch64-unknown-linux-gnu
i586-pc-nto-qnx700
(QNX Neutrino RTOS, version 7.0),This catches undefined behavior at runtime, and may cause existing code to fail.
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
Libraries
Command
prefer non-verbatim pathsconcat!
Cell
partial_cmp
to implement tuplelt
/le
/ge
/gt
atomic_as_ptr
nonnull_slice_from_raw_parts
once_cell
nonzero_min_max
FnPtr
trait that is implemented for all function pointersThis extends
Debug
,Pointer
,Hash
,PartialEq
,Eq
,PartialOrd
, andOrd
implementations for function pointers with all ABIs.
Stabilized APIs
NonZero*::MIN/MAX
BinaryHeap::retain
Default for std::collections::binary_heap::IntoIter
Default for std::collections::btree_map::{IntoIter, Iter, IterMut}
Default for std::collections::btree_map::{IntoKeys, Keys}
Default for std::collections::btree_map::{IntoValues, Values}
Default for std::collections::btree_map::Range
Default for std::collections::btree_set::{IntoIter, Iter}
Default for std::collections::btree_set::Range
Default for std::collections::linked_list::{IntoIter, Iter, IterMut}
Default for std::vec::IntoIter
Default for std::iter::Chain
Default for std::iter::Cloned
Default for std::iter::Copied
Default for std::iter::Enumerate
Default for std::iter::Flatten
Default for std::iter::Fuse
Default for std::iter::Rev
Default for std::slice::Iter
Default for std::slice::IterMut
Rc::into_inner
Arc::into_inner
std::cell::OnceCell
Option::is_some_and
NonNull::slice_from_raw_parts
Result::is_ok_and
Result::is_err_and
std::sync::atomic::Atomic*::as_ptr
std::io::IsTerminal
std::os::linux::net::SocketAddrExt
std::os::unix::net::UnixDatagram::bind_addr
std::os::unix::net::UnixDatagram::connect_addr
std::os::unix::net::UnixDatagram::send_to_addr
std::os::unix::net::UnixListener::bind_addr
std::path::Path::as_mut_os_str
std::sync::OnceLock
Cargo
CARGO_PKG_README
sparse
the default protocol for crates.iocargo logout
Misc
--test-run-directory
Compatibility Notes
libtest
from supporting-Zunstable-options
let _ = expr
position.sign-ext
andmutable-globals
features in codegenThis may cause incompatibility with older execution environments.
This catches undefined behavior at runtime, and may cause existing code to fail.
Internal Changes
These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.
v1.69.0
Compare Source
==========================
Language
Copy
fields.cmpxchg16b
target feature on x86 and x86_64.Self: Autotrait
bounds on dyn-safe trait methods.str
as containing[u8]
for auto trait purposes.Compiler
*-pc-windows-gnu
on CI to mingw-w64 v10 and GCC 12.2.true
andfalse
as boolean flags in compiler arguments.repr(C)
enums toc_int
size.Libraries
DispatchFromDyn
for cell types, allowing downstream experimentation with custom method receivers.fmt::Arguments::as_str()
may returnSome(_)
in more cases after optimization, subject to change.AsFd
andAsRawFd
forRc
.Stabilized APIs
CStr::from_bytes_until_nul
core::ffi::FromBytesUntilNulError
These APIs are now stable in const contexts:
SocketAddr::new
SocketAddr::ip
SocketAddr::port
SocketAddr::is_ipv4
SocketAddr::is_ipv6
SocketAddrV4::new
SocketAddrV4::ip
SocketAddrV4::port
SocketAddrV6::new
SocketAddrV6::ip
SocketAddrV6::port
SocketAddrV6::flowinfo
SocketAddrV6::scope_id
Cargo
cargo fix
orcargo clippy --fix
when compilation warnings are auto-fixable.cargo add
if you try to install a library crate.CARGO_BIN_NAME
environment variable also for binary examples.Rustdoc
rustdoc::all
group.!
.Compatibility Notes
rust-analysis
component fromrustup
now only contains a warning placeholder. This was primarily intended for RLS, and the corresponding-Zsave-analysis
flag has been removed from the compiler as well.default-features
is set to false of a workspace dependency, and an inherited dependency of a member hasdefault-features = true
, Cargo will enable default features of that dependency.CARGO_HOME
in the[env]
configuration table. Cargo itself doesn't pick up this value, but recursive calls to cargo would, which was not intended.If
tools = [...]
is set in config.toml, we will respect a missing rustdoc in that list. Bydefault rustdoc remains included. To retain the prior behavior explicitly add
"rustdoc"
to thelist.
Internal Changes
These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.
format_args!()
into AST (and expand it during AST lowering)v1.68.2
Compare Source
===========================
The key was rotated by GitHub
on 2023-03-24 after the old one leaked.
This will prevent Cargo from accepting the leaked key even when trusted by
the system.
@revoked
and a better error message for@cert-authority
in Cargo's SSH host key verificationv1.68.1
Compare Source
===========================
This was introduced by enabling ThinLTO for the distributed rustc which led
to miscompilations in the resulting binary. Currently this is believed to be
limited to the -Zdylib-lto flag used for rustc compilation, rather than a
general bug in ThinLTO, so only rustc artifacts should be affected.
$prefix-clang
asclang
in linker detection codev1.68.0
Compare Source
==========================
Language
This allows usage of
alloc
on stable without requiring thedefinition of a handler for allocation failure. Defining custom handlers is still unstable.
efiapi
calling convention.Compiler
bindings_with_variant_name
to deny-by-defaultarmv7-sony-vita-newlibeabihf
as a tier 3 targetLibraries
std::task::Context
!Send and !SyncOnceWith
&RepeatWith
Vec -> VecDeque
conversion guaranteeStabilized APIs
{core,std}::pin::pin!
impl From<bool> for {f32,f64}
std::path::MAIN_SEPARATOR_STR
impl DerefMut for PathBuf
These APIs are now stable in const contexts:
VecDeque::new
Cargo
cargo build --verbose
tells you more about why it recompiles.net.git-fetch-with-cli
option enabledMisc
Compatibility Notes
SEMICOLON_IN_EXPRESSIONS_FROM_MACROS
to future-incompat report--target
by default for-Zgcc-ld=lld
on wasmIMPLIED_BOUNDS_ENTAILMENT
to Deny + ReportNowstd::task::Context
no longer implements Send and SyncInternal Changes
These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.
x86_64-pc-windows-msvc
x86_64-apple-darwin
v1.67.1
Compare Source
===========================
clippy::uninlined_format_args
to pedantic.v1.67.0
Compare Source
==========================
Language
Sized
predicates coinductive, allowing cycles.#[must_use]
annotations onasync fn
also affect theFuture::Output
.cfg(FALSE)
.Compiler
C
orcdecl
.verbatim
.Added, updated, and removed targets:
powerpc64-ibm-aix
.mipsel-sony-psx
.no_std
targets for the QNX Neutrino RTOS,aarch64-unknown-nto-qnx710
andx86_64-pc-nto-qnx710
.aarch64-unknown-uefi
,i686-unknown-uefi
, andx86_64-unknown-uefi
.linuxkernel
targets (not used by the actual kernel).Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
Libraries
crossbeam-channel
intostd::sync::mpsc
.Eq
andHash
forControlFlow
.compiler_builtins
with-C panic=abort
.Stabilized APIs
{integer}::checked_ilog
{integer}::checked_ilog2
{integer}::checked_ilog10
{integer}::ilog
{integer}::ilog2
{integer}::ilog10
NonZeroU*::ilog2
NonZeroU*::ilog10
NonZero*::BITS
These APIs are now stable in const contexts:
char::from_u32
char::from_digit
char::to_digit
core::char::from_u32
core::char::from_digit
Compatibility Notes
repr(Rust)
types now groups m*2^n-sized fields withequivalently aligned ones.
This is intended to be an optimization, but it is also known to increase type
sizes in a few cases for the placement of enum tags. As a reminder, the layout
of
repr(Rust)
types is an implementation detail, subject to change.This makes it consistent with the rest of floating point formatting that
rounds ties toward even digits.
&&
and||
will now drop temporaries from their sub-expressions inevaluation order, left-to-right.
Previously, it was "twisted" such that the first expression dropped its
temporaries last, after all of the other expressions dropped in order.
This has been a future-compatibility warning since 1.20.0.
-export-dynamic
towasm-ld
.main
is now mangled as__main_void
onwasm32-wasi
.with the same index URL.
Internal Changes
These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.
v1.66.1
Compare Source
===========================
v1.66.0
Compare Source
==========================
Language
repr(Int)
enumsmust_use
onimpl Trait
for supertraitsThis makes
impl ExactSizeIterator
respect the existing#[must_use]
annotation onIterator
...=X
in patternsclippy::for_loops_over_fallibles
lint into rustcsym
operands in inline assemblyThis is a soundness fix which may break code that was erroneously relying on this behavior.
Compiler
information on Rust's tiered platform support.
Libraries
#[derive(Default)]
on a generic#[default]
enum adding unnecessaryDefault
boundsStabilized APIs
proc_macro::Span::source_text
uX::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}
iX::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}
iX::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
BTreeSet::{first, last, pop_first, pop_last}
BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
AsFd
implementations for stdio lock types on WASI.impl TryFrom<Vec<T>> for Box<[T; N]>
core::hint::black_box
Duration::try_from_secs_{f32,f64}
Option::unzip
std::os::fd
Rustdoc
Cargo
cargo remove
to remove dependencies from Cargo.tomlcargo publish
now waits for the new version to be downloadable before exitingSee detailed release notes for more.
Compatibility Notes
ProceduralMasquerade
hack to older versions ofrental
__heap_base
and__data_end
on wasm32-wasi.__wasm_init_memory
on WebAssembly.__tls_*
on wasm32-unknown-unknown.libresolv
in libstd on Darwinlibstd
no longer pull inlibiconv.dylib
on Darwin)This is a soundness fix which may break code that was erroneously relying on this behavior.
order_dependent_trait_objects
show up in future-breakage reportsInternal Changes
These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.
v1.65.0
Compare Source
==========================
Language
as
casts of enums with#[non_exhaustive]
variantslet else
let_underscore_drop
andlet_underscore_lock
from Clippybreak
ing from arbitrary labeled blocks ("label-break-value")Usage of
MaybeUninit
is the correct way to work with uninitialized memory.Drop
impl on foreign ADTsCompiler
special_module_name
lint-C instrument-coverage
New targets:
information on Rust's tiered platform support.
Libraries
PartialEq::ne
in derive(PartialEq)BCRYPT_RNG_ALG_HANDLE
by defaultSystem
with direct system allocator callsstd::layout::Layout
size must not overflowisize::MAX
when rounded up toalign
This also changes the safety conditions on
Layout::from_size_align_unchecked
.Stabilized APIs
std::backtrace::Backtrace
Bound::as_ref
std::io::read_to_string
<*const T>::cast_mut
<*mut T>::cast_const
These APIs are now stable in const contexts:
<*const T>::offset_from
<*mut T>::offset_from
Cargo
This slightly optimizes job scheduling by Cargo, with typically small improvements on larger crate graph builds.
Compatibility Notes
std::layout::Layout
size must not overflowisize::MAX
when rounded up toalign
.This also changes the safety conditions on
Layout::from_size_align_unchecked
.PollFn
now only implementsUnpin
if the closure isUnpin
.This is a possible breaking change if users were relying on the blanket unpin implementation.
See discussion on the PR for details of why this change was made.
This is a backwards-incompatible change to the standard library's surface
area, but is unlikely to affect real world usage.
This behavior was unintentionally changed in 1.64.0, and this release reverts that change by making this an error again.
Configuration
📅 Schedule: Branch creation - "before 3am on the first day of the month" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.